home *** CD-ROM | disk | FTP | other *** search
- /* ==================================================================
- FILE: Button.js
- DESCR: Button control for Netscape Help implementation.
- NOTES: May require routine(s) from Utility.js.
- ================================================================== */
-
- var UP = 0
- var DOWN = 1
- var SELECTED = 2
- var DISABLED = 3
-
- // Disables the button bar without visibly disabling the buttons.
- var bDisableBtnBar = false
-
- // Bind events to event handler.
- document.captureEvents( Event.MOUSEDOWN )
- document.onmousedown = mouseDownEvt
-
- function mouseDownEvt( evt )
- {
- //alert( "mouseDownEvt()" )
-
- // Block right click events to block potentially destabilizing local menus.
- if ( evt.which == 3 ) {
- return false
- }
-
- // Block left mouse down when bar is disabled.
- else if ( bDisableBtnBar ) {
- return false
- }
-
- return true
- }
-
- /*
- DESCR: Button class.
- PARAMS: upImage Image file for up state.
- downImage Image file for down state.
- selectedImage Image file for selected state.
- disabledImage Image file for disabled state.
- command Command to execute.
- bBlender Specifies that the button should behave as a
- blender-type button.
- label Text to go next to button. Use "" for no label.
- toolTip Mouse tip text. Use "" for no tool tip.
- bar The buttonBar object.
- RETURNS:
- NOTES:
- */
- function button( upImage, downImage, selectedImage, disabledImage, command,
- bBlender, label, toolTip, bar )
- {
- this.state = UP // Default state.
-
- this.buttonNumber = bar.aButtons.length
-
- this.aImages = new Array( upImage, downImage, selectedImage, disabledImage )
-
- this.command = command
- this.bBlender = bBlender
- this.bOn = false
- this.label = label
- this.toolTip = toolTip
- this.bar = bar
-
- this.mouseOverEvt = mouseOverEvt
- this.mouseOutEvt = mouseOutEvt
- this.clickEvt = clickEvt
- this.enable = enable
- this.turnOff = turnOff
- this.setState = setState
- }
-
- /*
- DESCR: Enables and disables a button.
- PARAMS: bEnable Pass true for enable; false for disable.
- RETURNS:
- NOTES:
- */
- function enable( bEnable )
- {
- this.setState( bEnable ? UP : DISABLED )
- }
-
- /*
- DESCR: Turns the button off if it is a blender button that is on.
- PARAMS:
- RETURNS:
- NOTES:
- */
- function turnOff()
- {
- if ( this.bBlender && this.bOn ) {
- this.setState( UP )
- }
- }
-
- /*
- DESCR: Assigns state and sets button image.
- PARAMS: newState State value for the button.
- RETURNS:
- NOTES:
- */
- function setState( newState )
- {
- this.state = newState
- if ( this.bBlender && this.state == UP ) this.bOn = false
-
- document.images[ this.buttonNumber ].src = this.aImages[ this.state ]
- }
-
- /*
- DESCR: Mouse over event handler.
- PARAMS:
- RETURNS:
- NOTES:
- */
- function mouseOverEvt()
- {
- if ( this.state == DISABLED ) return
- if ( this.bBlender && this.bOn ) return
-
- if ( this.state == UP ) {
- this.setState( SELECTED )
- }
- }
-
- /*
- DESCR: Mouse out event handler.
- PARAMS:
- RETURNS:
- NOTES:
- */
- function mouseOutEvt()
- {
- if ( this.state == DISABLED ) return
- if ( this.bBlender && this.bOn ) return
-
- this.setState( UP )
- }
-
- /*
- DESCR: Mouse click event handler.
- PARAMS:
- RETURNS:
- NOTES:
- */
- function clickEvt()
- {
- if ( this.state == DISABLED ) return
- if ( this.bBlender && this.bOn ) return
-
- this.setState( DOWN )
-
- // If this is a blender button, turn off the other blenders.
- if ( this.bBlender ) {
- for ( var i = 0; i < this.bar.aButtons.length; i++ ) {
- this.bar.aButtons[ i ].turnOff()
- }
- this.bOn = true
- }
-
- // Execute command.
- eval( this.command )
- }
-
- // End class definition: button.
-
- /*
- DESCR: Button bar class.
- PARAMS: bgColor Background color for the bar.
- bLandscape Pass true for landscape orientation, false for portrait.
- align Button alignment. Pass "LEFT" or "RIGHT".
- width Bar width in pixels or percentage.
- spacing For landscape, this refers to additional pixels to right
- of button image. Use "" for no extra space. For portrait,
- this refers to the height of an additional row between
- buttons. Use "" for no extra space.
- barName Identifier representing the bar.
- RETURNS:
- NOTES:
- */
- function buttonBar( bgColor, bLandscape, align, width, spacing, barName )
- {
- //top.trace( "buttonBar constructor()" )
-
- this.aButtons = new Array()
- this.bgColor = bgColor
- this.bLandscape = bLandscape
- this.align = align
- this.width = width
- this.spacing = spacing
- this.barName = barName
-
- this.addButton = addButton
- this.create = create
- }
-
- /*
- DESCR: Adds a button to a bar.
- PARAMS: button The button object.
- RETURNS:
- NOTES:
- */
- function addButton( button )
- {
- this.aButtons[ this.aButtons.length ] = button
- }
-
- /*
- DESCR: Writes the document.
- PARAMS:
- RETURNS:
- NOTES:
- */
- function create()
- {
- if ( this.aButtons.length == 0 ) return false
-
- var html
-
- html = "<HTML>"
- html += "<HEAD>"
- // html += "<STYLE TYPE = 'text/javascript'>"
- // html += "classes.label.all.fontFamily = 'arial';"
- // html += "classes.label.all.fontSize = '12px';"
- // html += "classes.label.all.color = '#000066';"
- // html += "</STYLE>"
- html += "</HEAD>"
-
- html += "<BODY BGCOLOR = " + this.bgColor + ">"
-
- html += "<TABLE BORDER = 0 ALIGN = " + this.align + " WIDTH = " + this.width + ">"
-
- // For each button.
- html += "<TR>"
- for ( var i = 0; i < this.aButtons.length; i++ ) {
- html += "<TD ALIGN = 'center'>"
- html += "<A HREF = 'javascript:" + this.barName + ".aButtons[" + i + "].clickEvt()' "
- html += "ONMOUSEOVER = '" + this.barName + ".aButtons[" + i + "].mouseOverEvt()' "
- html += "ONMOUSEOUT = '" + this.barName + ".aButtons[" + i + "].mouseOutEvt()'>"
- html += "<IMG SRC = '" + this.aButtons[ i ].aImages[ this.aButtons[ i ].state ] + "' BORDER = 0 ALT = '" + this.aButtons[ i ].toolTip + "'>"
- html += "</A>"
- if ( this.spacing != "" ) {
- html += "<SPACER TYPE = 'block' WIDTH = " + this.spacing + ">"
- }
- html += "</TD>"
-
- if ( !this.bLandscape ) {
-
- // Add label cell and terminate row. Add spacer row.
- html += "<TD ALIGN = 'left'>"
- html += "<DIV CLASS = label>"
- html += this.aButtons[ i ].label
- html += "</DIV>"
- html += "</TD>"
- html += "</TR>"
- if ( this.spacing != "" ) {
- html += "<TR><TD><SPACER TYPE = 'block' HEIGHT = " +
- this.spacing + "></TD></TR>"
- }
- }
- }
-
- if ( this.bLandscape ) {
-
- // End row and fill next with labels.
- html += "</TR>"
- html += "<TR>"
- for ( var i = 0; i < this.aButtons.length; i++ ) {
- html += "<TD ALIGN = 'center'>"
- html += "<DIV CLASS = label>"
- html += this.aButtons[ i ].label
- html += "</DIV>"
- if ( this.spacing != "" ) {
- html += "<SPACER TYPE = 'block' WIDTH = " + this.spacing + ">"
- }
- html += "</TD>"
- }
- html += "</TR>"
- }
-
- html += "</TABLE></BODY></HTML>"
-
- with ( document ) {
- open()
- write( html )
- close()
- }
-
- return true
- }
-
- // End class definition: buttonBar.
-
-
-
-